﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TISModel;
using BTO;
using DAL;
using Exceptions;

//acho que falta aqui o insert//
namespace BLL
{
    public class BLLContacto
    {
        public List<BTO.Contacto> list()
        {
            DALContacto contactos = new DALContacto();
            return contactos.list();
        }

        public BTO.Contacto getByID(int id)
        {
            DALContacto dalContacto = new DALContacto();
            BTO.Contacto btoContacto = dalContacto.getByID(id);

            if (btoContacto == null) {
                throw new NotFoundContactoException("Contacto não encontrado!");
            }

            return btoContacto;
        }

        public List<BTO.Contacto> getByCliente(int? idCliente)
        {
            DALContacto dalContacto = new DALContacto();
            List<BTO.Contacto> btoContactos = dalContacto.getByCliente(idCliente);

            if (btoContactos.Count()==0) {
                throw new NotFoundContactoException("Contactos não encontrados!");
            }

            return btoContactos;
        }

        public List<BTO.Contacto> getByAgencia(int idAgencia)
        {
            DALContacto dalContacto = new DALContacto();
            List<BTO.Contacto> btoContactos = dalContacto.getByAgencia(idAgencia);

            if (btoContactos.Count() == 0) 
            {
                throw new NotFoundContactoException("Nao foram registados contactos nesta agencia.");
            }

            return btoContactos;
        }

        public void insert(BTO.Contacto toInsert)
        {
            DALContacto dalContacto = new DALContacto();

            try
            {
                dalContacto.insert(toInsert);
            }
            catch (Exception e)
            {
                throw new InsertContactoException(e.Message);
            }
        }

        public void delete(int id)
        {
            DALContacto dalContacto = new DALContacto();

            try
            {
                dalContacto.delete(id);
            }
            catch (Exception e) {
                throw new DeleteContactoException(e.Message);
            }
        }
    }
}
